home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Softdisk Magazette Volume 2, No. 06 (1983-02)(Softdisk)(Side B).zip / Softdisk Magazette Volume 2, No. 06 (1983-02)(Softdisk)(Side B).do / MAILING LABELS.bas < prev    next >
BASIC Source File  |  1996-12-24  |  8KB  |  123 lines

  1. 5  DIM I$(300,6)
  2. 10 D$ =  CHR$(4):O$ = D$ +"OPEN":C$ = D$ +"CLOSE":R$ = D$ +"READ"
  3. 20 W$ = D$ +"WRITE"
  4. 30  TEXT : HOME : HTAB 15: PRINT "MAILING LIST": HTAB 13: PRINT "BY JOE FRATIANNI"
  5. 40  VTAB 5: PRINT "OPTIONS:": POKE 32,9: PRINT : PRINT "1. PRINT MASTER LIST": PRINT "2. ENTER NEW NAMES": PRINT "3. SORT": PRINT "4. MODIFY NAMES": PRINT "5. DELETE NAMES": PRINT "6. PRINT LABELS"
  6. 50  PRINT "7. WORK WITH NEW FILE": PRINT "8. INSERT NAMES": PRINT "9. EXIT PROGRAM"
  7. 60  POKE 32,0: POKE 34,18: VTAB 19: HTAB 10: INPUT "SELECTION NUMBER ?";A$
  8. 70 A =  INT( ABS( VAL(A$))): IF A <1  OR A >9  THEN  HOME : GOTO 60
  9. 80  ON A GOTO 100,270,400,500,660,730,880,1100,1000
  10. 90  REM  PRINT MASTER LIST
  11. 100  TEXT : HOME : IF L = 0  THEN  PRINT "NO INFORMATION IN MEMORY": PRINT "HIT ANY KEY";: GET A$: GOTO 30
  12. 105  PRINT "130 COLUMN PRINTER?";: GET A$: PRINT : IF A$ < >"N"  THEN 110
  13. 106  PRINT "<CTRL-D>PR#1"
  14. 107  PRINT "REF #   NAME                      ADDRESS                        CITY": PRINT "=== =   ====                      =======                        ===="
  15. 109  GOTO 150
  16. 110  PRINT "READY PRINTER AND": GOSUB 1080: PRINT : PRINT D$"PR#1"
  17. 120  PRINT "   ": PRINT  CHR$(15)
  18. 130  PRINT "REF #   NAME                      COMPANY              ADDRESS                        CITY                STATE   ZIP"
  19. 140  PRINT "=== =   ====                      =======              =======                        ====                =====   ==="
  20. 150  FOR A = 1 TO L: PRINT A; SPC( 8 - LEN( STR$(A)));: FOR B = 1 TO 6: GOSUB 3000: PRINT I$(A,B);: ON B GOSUB 160,170,180,190,200,210: GOTO 220
  21. 160 L1 = 25: RETURN 
  22. 170 L1 = 20: RETURN 
  23. 180 L1 = 30: RETURN 
  24. 190 L1 = 20: RETURN 
  25. 200 L1 = 6: RETURN 
  26. 210 L1 = 5: RETURN 
  27. 220  IF  LEN(I$(A,B)) = L1  THEN 240
  28. 230  PRINT  SPC( L1 - LEN(I$(A,B)));
  29. 240  PRINT " ";: NEXT : PRINT : NEXT 
  30. 250  PRINT  CHR$(27) CHR$(64): PRINT D$"PR#0": GOTO 30
  31. 260  REM  ENTER NEW NAMES
  32. 270  TEXT : HOME : PRINT "NAME -------------------------": PRINT : PRINT "COMPANY --------------------": PRINT : PRINT "ADDRESS ------------------------------": PRINT : PRINT "CITY --------------------": PRINT : PRINT "STATE --": PRINT : PRINT "ZIP -----"
  33. 280  VTAB 1: HTAB 6:L1 = 25: GOSUB 300: VTAB 3: HTAB 9:L1 = 20: GOSUB 300: VTAB 5: HTAB 9:L1 = 30: GOSUB 300: VTAB 7: HTAB 6:L1 = 20: GOSUB 300: VTAB 9: HTAB 7:L1 = 2: GOSUB 300: VTAB 11: HTAB 5:L1 = 5: GOSUB 300
  34. 290  GOTO 270
  35. 300  IF MD = 1  THEN  GOSUB 600: IF L1 = 5  THEN 640
  36. 310  IF MD = 1  THEN 380
  37. 320  INPUT "";A$: IF  LEN(A$) >L1  THEN A$ =  LEFT$(A$,L1):I$(L +1) = I$(L +1) +A$: GOSUB 360: RETURN 
  38. 330  IF A$ = "//STOP"  THEN P = 0: GOTO 30
  39. 340 P = P +1
  40. 350 I$(L +1,P) = A$
  41. 360  IF L1 = 5  AND MD = 2  THEN  POP : GOTO 1140
  42. 370  IF L1 = 5  THEN L = L +1:P = 0:M = 1: RETURN 
  43. 380  RETURN 
  44. 390  REM  SORT
  45. 400  TEXT : HOME : IF L <20  THEN  PRINT "NO INFORMATION IN MEMORY": GOSUB 1080: GOTO 30
  46. 410 D = 0
  47. 420  TEXT : HOME : PRINT "1. NAME": PRINT "2. COMPANY": PRINT "3. ADDRESS": PRINT "4. CITY": PRINT "5. STATE": PRINT "6. ZIP": PRINT : PRINT "YOU MAY SORT ON ANY ONE FIELD.": PRINT : INPUT "ENTER FIELD NUMBER ";A$:A =  ABS( INT( VAL(A$))): IF A <1  OR A >6  THEN 400
  48. 430 S = A: HOME : VTAB 5: PRINT "SORT IN PROGRESS...": VTAB 10: PRINT "SORTING RECORD #": PRINT "COMPARING RECORD #": FOR A = 1 TO L -1: VTAB 10: HTAB 19: PRINT A;: IF  LEFT$(I$(A,1),1) =  CHR$(92)  THEN D = 1: GOTO 470
  49. 440  IF D = 1  THEN 470
  50. 450  FOR B = A +1 TO L: IF I$(A,S) <I$(B,S)  THEN 470
  51. 460  FOR C = 1 TO 6:S$(C) = I$(A,C):I$(A,C) = I$(B,C):I$(B,C) = S$(C): NEXT 
  52. 470  VTAB 11: HTAB 20: PRINT B -A;"    ";: NEXT :D = 0: NEXT 
  53. 480 M = 1: GOTO 30
  54. 490  REM MODIFY NAMES
  55. 500  IF L = 0  THEN  TEXT : HOME : PRINT "NO INFORMATION IN MEMORY": GOSUB 1080: GOTO 30
  56. 510  TEXT : HOME :R = 0: VTAB 10: PRINT "REFERENCE NUMBER OF ITEM": INPUT "TO BE MODIFIED ?";A$: IF A$ = ""  THEN 500
  57. 520  IF A$ = "//STOP"  THEN MD = 0: GOTO 30
  58. 530 A =  VAL(A$): IF A <1  OR A < > INT( ABS(A))  THEN 500
  59. 540  PRINT A,A$
  60. 550  IF A >L  THEN  PRINT : PRINT "ONLY ";L;" ITEMS IN FILE": GOSUB 1080: GOTO 500
  61. 560 D = A
  62. 570  HOME : PRINT D: FOR A = 1 TO 6: PRINT I$(D,A): NEXT : PRINT : PRINT : INPUT "IS THIS THE CORRECT INFORMATION ?";A$:A$ =  LEFT$(A$,1): IF A$ < >"Y"  AND A$ < >"N"  THEN 570
  63. 580  IF A$ = "N"  THEN 500
  64. 590 MD = 1: GOTO 270
  65. 600 P1 = 1 + POS(0):R = R +1: PRINT I$(D,R);: HTAB P1: INPUT "";A$: IF A$ = ""  THEN 630
  66. 610  IF  LEN(A$) >L1  THEN A$ =  LEFT$(A$,L1)
  67. 620 I$(D,R) = A$
  68. 630  RETURN 
  69. 640 M = 1: GOTO 500
  70. 650  REM  DELETE NAMES
  71. 660  TEXT : HOME : VTAB 10: IF L = 0  THEN  PRINT "NO INFORMATION IN MEMORY": GOSUB 1080: GOTO 30
  72. 670  PRINT "REFERENCE NUMBER OF ITEM": INPUT "TO BE DELETED ?";A$:A =  INT( ABS( VAL(A$))): IF A$ = "//STOP"  THEN 30
  73. 680  IF A <1  OR A >L  THEN  PRINT : PRINT "MUST BE NUMBER BETWEEN 1 AND"L: GOSUB 1080: GOTO 660
  74. 690  HOME :D = A: FOR A = 1 TO 6: PRINT I$(D,A): NEXT : PRINT : INPUT "IS THE CORRECT INFORMATION ?";A$:A$ =  LEFT$(A$,1): IF A$ < >"Y"  AND A$ < >"N"  THEN A = D: GOTO 690
  75. 700  IF A$ = "N"  THEN 660
  76. 710  HOME : VTAB 10: PRINT "DELETING INFORMATION...": FOR A = D TO L -1: FOR B = 1 TO 6:I$(A,B) = I$(A +1,B): NEXT : NEXT : PRINT "INFORMATION DELETED":L = L -1: GOSUB 1080:M = 1: GOTO 30
  77. 720  REM  PRINT LABELS
  78. 730  TEXT : HOME : VTAB 10: IF L = 0  THEN  PRINT "NO INFORMATION IN MEMORY": GOSUB 1080: GOTO 30
  79. 740  PRINT "READY PRINTER, AND": GOSUB 1080: PRINT D$"PR#1": PRINT "JOE FRATIANNI": PRINT "S.O.C.C.": PRINT "5746 THOMPSON RD": PRINT "DEWITT, NY 13214": PRINT : PRINT : PRINT D$"PR#0"
  80. 750  PRINT "ADJUST LABEL, HIT RETURN FOR ANOTHER": PRINT "TEST LABEL, ANY OTHER KEY TO BEGIN": GOSUB 1080: IF A$ =  CHR$(13)  THEN 740
  81. 760  HOME : VTAB 10: INPUT "HOW MANY SETS OF LABELS ?";A$:A =  ABS( INT( VAL(A$))): IF A <1  OR A >10000  THEN  PRINT "LET'S BE REASONABLE": GOSUB 1080: GOTO 760
  82. 770  HOME : PRINT "ESCAPE KEY WILL HALT PRINTING AT ANY": PRINT "TIME, ANY OTHER KEY WILL RESUME PRINTING": POKE 34,5: VTAB 6:NL = A: PRINT D$"PR#1": FOR A = 1 TO NL: FOR B = 1 TO L
  83. 780 P$ = I$(B,1): GOSUB 830: IF P = 1  THEN  PRINT P$
  84. 790 P$ = I$(B,2): GOSUB 830: IF P = 1  THEN  PRINT P$
  85. 800 P$ = I$(B,3): GOSUB 830: IF P = 1  THEN  PRINT P$
  86. 810  PRINT I$(B,4)"," SPC( 18 - LEN(I$(B,4)))I$(B,5) SPC( 5 - LEN(I$(B,5)))I$(B,6)
  87. 820  FOR C = 1 TO 2 +NP: PRINT : NEXT :NP = 0: NEXT : NEXT : TEXT : HOME : PRINT D$"PR#0": GOSUB 1080: GOTO 30
  88. 830  IF P$ = ""  THEN P = 0:NP = NP +1: GOTO 850
  89. 840 P = 1
  90. 850 X =  PEEK( -16384): POKE  -16368,0: IF X = 155  THEN  WAIT  -16384,128: POKE  -16368,0
  91. 860  RETURN 
  92. 870  REM    NEW FILE  
  93. 880  TEXT : HOME : VTAB 10: INPUT "FILE NAME ?";A$: HOME : IF A$ = ""  THEN 880
  94. 890  IF A$ = "//STOP"  THEN 30
  95. 900  ONERR  GOTO 950
  96. 910  PRINT D$"VERIFY"A$: PRINT O$A$: PRINT R$A$: INPUT L: INPUT C: IF C = 0  THEN 930
  97. 920  INPUT C$
  98. 930  VTAB 10: PRINT "READING RECORD #": FOR A = 1 TO L: VTAB 10: HTAB 18: PRINT A: FOR B = 1 TO 6: INPUT I$(A,B): NEXT : NEXT : PRINT C$
  99. 940  PRINT "<CTRL-D>CLOSE":F$ = A$: GOTO 30
  100. 950 E =  PEEK(222): POKE 216,0: POKE 222,0: IF E = 6  THEN L = 0:F$ = A$: GOTO 30
  101. 960  IF E = 8  THEN  PRINT "I/O ERROR": PRINT "INSERT CORRECT DISK AND": GOSUB 1080: GOTO 880
  102. 970  IF E = 13  THEN  PRINT "FILE ALREADY EXITS": GOSUB 1080: GOTO 880
  103. 980  STOP 
  104. 990  REM  EXIT, SAVE
  105. 1000  TEXT : HOME : IF M = 0  THEN  END 
  106. 1010  IF F$ = ""  THEN  INPUT "FILE NAME ?";F$
  107. 1020  ONERR  GOTO 1040
  108. 1030  PRINT "<CTRL-D>VERIFY "F$: PRINT "<CTRL-D>DELETE"F$:
  109. 1040  PRINT O$F$: PRINT W$F$: PRINT L: PRINT 0: FOR A = 1 TO L: FOR B = 1 TO 6: PRINT I$(A,B): NEXT : NEXT 
  110. 1050  PRINT "<CTRL-D>CLOSE"
  111. 1060  END 
  112. 1070  PRINT "ERROR<CTRL-G><CTRL-G><CTRL-G>"
  113. 1080  PRINT : PRINT "HIT ANY KEY TO CONTINUE ";: GET B$: PRINT : RETURN 
  114. 1090  REM  INSERT NAMES
  115. 1100  TEXT : HOME : VTAB 10: IF L = 0  THEN  PRINT "NO INFORMATION IN MEMORY": GOSUB 1080: GOTO 30
  116. 1110  PRINT "INSERT ";: INVERSE : PRINT "BEFORE";: NORMAL : INPUT " NUMBER ?";A$:A =  INT( ABS( VAL(A$))): IF A <1  OR A >L  THEN  PRINT "MUST BE NUMBER BETWEEN 1 AND "L: GOSUB 1080: GOTO 1100
  117. 1120 IN = A: FOR A = 1 TO 6: PRINT I$(IN,A): NEXT : PRINT : INPUT "IS THIS THE CORRECT INFORMATION ?";A$:A$ =  LEFT$(A$,1): IF A$ < >"Y"  AND A$ < >"N"  THEN A = IN: GOTO 1120
  118. 1130  FOR A = L TO IN  STEP  -1: FOR B = 1 TO 6:I$(A +1,B) = I$(A,B): NEXT : NEXT :L2 = L +1:L = IN -1:MD = 2: GOTO 270
  119. 1140 L = L2:MD = 0:P = 0: HOME : VTAB 10: PRINT "INFORMATION INSERTED.": GOSUB 1080:M = 1: GOTO 30
  120. 3000  IF A$ < >"N"  THEN 3010
  121. 3005  IF B = 2  OR B = 5  OR B = 6  THEN  POP : GOTO 240
  122. 3006  IF B = 4  THEN  POP : PRINT I$(A,B): GOTO 240
  123. 3010  RETURN